The message system provides a way to notify about events and to exchange information.
MessageArguments
is the base class for arguments passed in messages. Kanzi provides built-in message types for different nodes and triggers. For example, the ButtonConcept::ClickedMessageArguments
message for the Button: Click trigger and the Page::ActivatedMessageArguments
message for the Page Activated trigger.
You can extend the MessageArguments
class by writing your own message types.
Message type describes:
ClickManipulator::ClickMessage
and ListBoxConcept::ItemSelectedMessage
.You can describe and access the message arguments with the PropertyType
objects. MessageArguments::setArgument
function sets and MessageArguments::getArgument
function retrieves arguments with the underlying storage type for arguments, such as float, Boolean, and Vector3.
To dispatch messages to the handlers, use Node::dispatchMessage
. This function defines the message type and arguments, and calls all the handlers which are registered for the node for that message type.
Node::dispatchMessage
notifies the handlers immediately before the function call returns, which enables the handlers to react to the message immediately.
All messages in Kanzi are routed messages. When you dispatch a message it travels in two phases: first tunneling, then bubbling. During the tunneling phase the message travels down the scene graph from the first child node of the Screen node (the root node) to the node where the message originated. From there the message bubbles back up the scene graph to the root node. At each passed node in the scene graph the system looks for handlers for the dispatched message. This allows you to install handlers at any place in the scene graph to intercept messages before they reach their destination, or to gather messages from several sources.
Handle messages during bubbling phase, and intercept or filter messages during the tunneling phase.
Receivers are implemented as functions and passed as pointers to Node::addMessageHandler()
and kzuMessageDispatcherAddTunnellingHandler()
. To provide context to the receiver implementation, provide a pointer to the user data at registration time. Use Node::removeMessageHandler()
to remove handlers.
The message system has inbuilt support for timers, accessible using KzuMessageDispatcher
. kzuMessageDispatcherAddTimerHandler()
subscribes and kzuMessageDispatcherRemoveTimerHandler()
unsubscribes a timer. During subscription set the interval for the timer and the timer behavior:
To create a custom message in Kanzi Studio:
See Setting the handling of trigger messages.